草庐IT

docker - 如何在 Dockerfile 中启动另一个 bash

我想按照本教程HowtoupgradeGCConCentOS在容器(CentOS6.9)中将GCC从4.4.7更新到4.7.2.在教程的最后,作者使用sclenabledevtoolset-1.1bash来启动一个新的shell,所有的环境都更新了。我写了以下Dockerfile:Run...\&&yuminstalldevtoolset-1.1\&&sclenabledevtoolset-1.1bash但是,当我从Dockerfile生成的镜像运行容器时,发现GCC版本还是4.4.7,说明我进入的是旧shell。虽然我通过显式定义CC、CPP、CXX变量成功地更新了容器中的GCC,但

bash - docker 日志和缓冲输出

我想在没有换行符的情况下连续打印点(等待行为)。这个bash单行在我的机器上运行良好:$whiletrue;dosleep1;printf'.';done.......^C但是,当我在Docker容器中运行它时,当我尝试使用docker日志读取它的输出时,没有输出输出:$dockerrun-d--nametest_logsubuntu:14.04bash-c"whiletrue;dosleep1;printf'.';done"60627015ed0a0d331a26e0c48ccad31c641f2142da55d24e10f7ad5737211a18$dockerlogstest_l

bash - 从 docker 运行更长的命令

我正在使用Docker即时编写文件并运行它。到目前为止,该命令看起来像这样(只是为了先测试一下这个想法):dockerrundockerfile/pythoncathi.txt&&tailhi.txt>hithere>EOF由于某种原因,这不会回显任何内容。如果我在没有HEREDOC的情况下运行此命令,那么它会输出结果。例如以下作品:dockerrundockerfile/pythoncat>hi.txt&&lshi.txt如何输出多行运行命令/HEREDOC的结果。 最佳答案 我在摆弄crossbuild*并且想知道如何使用her

node.js - docker/bin/bash : nodemon: command not found

我正在尝试将我的工作Node代码从我的主机安装到一个docker容器中,并使用nodemon使用docker-compose运行它。但是容器似乎无法找到nodemon。注意:我的主机上没有安装node或npm。这是我的项目(测试)根文件夹中的文件。(这只是一个草稿)DockerfileFROMsurenderthakran/nodejs:v4ADD./testWORKDIR/testRUNmakeinstallCMDmakerun生成文件SHELL:=/bin/bashPWD:=$(shellpwd)exportPATH:=$(PWD)/node_modules/.bin:$(PWD)

docker - 使用 docker-compose 构建容器,但稍后使用 -it 选项运行/etc/bash?

我正在使用docker-compose进行开发。在此过程中,我经常需要构建5个容器(1个用于web-server,4个用于postgres、redis、mongo等)。Web服务器容器被配置为包含其他容器的链接,它有自己的ENV变量,从开发主机安装的卷。问题是我不需要Web容器来运行服务器本身。在创建所有依赖容器之后,我需要在Web容器内使用-it选项执行/etc/bash,而不是这样做。这就是为什么,我的web-containerdockerfile以:结尾CMD/bin/true显然,这样的容器不会运行,所以我不能像这样使用smthdockerexec-it/bin/bash“输入

bash - 如何使用 bash 将环境传递给 docker?

以下在docker中可以正常工作:dockerrun-i-t-rm-ea="helloworld"b=worldubuntu/bin/bash它所做的是将值为“helloworld”的envvara和值为“world”的envvarb传递到docker容器中。问题是,我需要从脚本中生成它。在没有空间的环境变量中使用它非常容易:ENV_VARS='-ea=helloworldb=world'dockerrun-i-t-rm$ENV_VARSubuntu/bin/bash但是,一旦envvar中有空间,我就会被淹没:ENV_VARS='-ea="helloworld"b=world'doc

bash - Dockerfile CMD 未在容器启动时运行

所以我已经为一个项目编写了一个Dockerfile,我已经定义了一个CMD来在启动容器时运行以引导应用程序。Dockerfile看起来像#createourmountfoldersandvolumesENVMOUNTED_VOLUME_DIR=sitesRUNmkdir/$MOUNTED_VOLUME_DIRENVPATH=$MOUNTED_VOLUME_DIR/sbin:$MOUNTED_VOLUME_DIR/common/bin:$PATHRUNchown-Rfwww-data:www-data/$MOUNTED_VOLUME_DIR#MountfoldersVOLUME["/$M

bash - 脚本完成后如何运行 docker 容器并提交更改?

我想设置一个cron作业以在docker容器中运行一组命令,然后将更改提交到docker镜像。我可以将容器作为守护进程运行并使用以下命令获取容器ID:CONTAINER_ID=$(sudodockerrun-dmy-image/bin/sh-c"sleep10")但是我在第二部分遇到了问题——一旦sleep10命令完成,就提交对图像的更改。有没有办法让我知道docker容器何时将被杀死并在它之前运行另一个命令?编辑:作为替代方案,有没有办法通过容器中的shell脚本触发ctrl-p-q以使容器保持运行但返回主机? 最佳答案 持久化容

bash - 如何进入这个 dockerfile/nginx 容器?

在docker容器中使用centos,我只需输入“dockerattachcontainerID”,它就会带我进入shell提示符,我可以在其中安装和配置nginx。这个比较简单:docker.comdockerfile/nginx您只需运行该文件,一切都已安装和配置。但我不知道如何进入和访问这些文件。 最佳答案 就我而言,标准bash并不存在。使用/bin/sh帮助了我:dockerrun-it-p80:80dockerfile/nginx/bin/sh 关于bash-如何进入这个do

bash - 将数据写入 Dockerfile 中的文件

我有一个shell脚本script.sh,它将一些行写入文件:#!/usr/bin/envbashprintf"blahblahblahblah\n"|sudoteefile.txt现在在我的Dockerfile中,我添加了这个脚本并运行它,然后尝试添加生成的file.txt:ADDscript.sh.RUNchmod755script.sh&&./script.shADDfile.txt.当我执行上述操作时,我只是收到一个关于ADDfile.txt.命令的错误:lstatfile.txt:nosuchfileordirectory为什么docker找不到我的shell脚本生成的文件?